practice problems of time complexity